Quuppa Connector
The Quuppa connector for the DeepHub allows to connect a Quuppa Positioning Engine to the DeepHub by creating omlox location updates from the Quuppa locations.
The connector can thereby be configured as a UDP output target in the Quuppa Positioning Engine.
Setup and Configuration
The Quuppa connector is available as a standalone Docker image at flowcate/deephub-connector:quuppa
.
To start this connector alongside a DeepHub instance the following configuration must be added to the service section in the docker-compose file used to start the DeepHub:
quuppa:
image: flowcate/deephub-connector:quuppa
container_name: qpa-connector
environment:
- DEEPHUB_URL=deephub
- DEEPHUB_PORT=7081
- QUUPPA_CONNECTOR_PORT=12000
- QUUPPA_CONNECTOR_DEBUG=false
ports:
- '12000:12000/udp'
networks:
- deephub-net
depends_on:
- deephub
This configuration is based on the DeepHub Basic Example. It will start an additional container ("quuppa-connector"), which accepts udp messages at port 12000. These messages will be forwarded as omlox location updates to the DeepHub service.
For other setups, the details of the configuration may have to be adjusted. The relevant configuration parameters are:
Variable | Description |
---|---|
DEEPHUB_PORT | The port of the DeepHub instance. |
DEEPHUB_URL | The address of the DeepHub instance. |
DEEPHUB_TARGET | The url target of the DeepHub instance. |
QUUPPA_CONNECTOR_PORT | The port used for receiving udp messages. |
QUUPPA_CONNECTOR_DEBUG | Whether debug output should be printed by the connector. (true or false) |
The Quuppa connector can also run as a standalone service. It does not have to run in the same docker network as the DeepHub. In this case, the variable DEEPHUB_URL must point to the ip address or URL where the DeepHub can be reached.
Property Mapping
The omlox location updates are constructed based on the information contained in the Quuppa location. The connector thereby uses the following mapping:
Quuppa | omlox |
---|---|
tagId | provider_id |
locationCoordSysId | source |
location | position |
locationTS | timestamp_generated |
locationRadius | accuracy |
Optional omlox properties may be omitted from the Quuppa message, but all required properties must be present.
The location updates are always interpreted as local coordinates.
This means that locationCoordSysId MUST correspond to a valid id or foreign_id of a zone in the DeepHub.
Also, locationType is expected to be present in the Quuppa location and to be neither hidden, nor noData.
The provider_type of the omlox location update will always be set to unknown.
In addition, the original Quuppa location will be added to the properties field of the omlox location as "quuppa_original".
Example
The following Quuppa location will result in the following omlox location update websocket message.
// Quuppa location
{
"location": [0, 0],
"tagId": "qpa_tag_id",
"locationCoordSysId": "qpa_zone_id",
"locationType": "position"
}
// resulting omlox location update websocket message
{
"event": "message",
"topic": "location_updates",
"payload": [
{
"provider_type": "unknown",
"provider_id": "qpa_tag_id",
"source": "qpa_zone_id",
"position": { "type": "Point", "coordinates": [0, 0] },
"properties": {
"quuppa_original": {
"location": [0, 0],
"tagId": "qpa_tag_id",
"locationCoordSysId": "qpa_zone_id",
"locationType": "position"
}
}
}
]
}
Authorization
Access management with authorization is currently not supported by this connector. If the DeepHub is configured to require authorization for sending location updates via websocket, this connector will not be able to send location updates.